其他
干货 | 携程10个有效降低客户端超时的方法
作者简介
Wen,携程资深后端开发工程师,专注系统性能、稳定性、交易系统等领域。
一、背景
二、超时的分类
三、超时问题分析与优化
3.1 设置合理的超时时间
核心接口:最小值( P99.9*3 ,用户可接受的等待时间),核心会影响到订单,在用户可接受范围内尽可能出结果。
非核心接口:最小值( P99.9*1.5,用户可接受的等待时间),非核心不影响订单,不展示也没关系。
3.2 限流
3.3 提升缓存命中率
3.4 优化线程池
效果
效果
3.5 优化 GC
效果
-XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=35
效果
3.6 线程异步改成 NIO 异步编程
3.7 启动阶段预热
3.8 优化 JIT
3.9 换宿主机
3.10 优化网络
四、总结
超时时间设置和 GC 调优需要结合自己业务场景来优化。
NIO 异步编程改造成本、复杂度较高,我们也在探索更简单的方式,例如 JDK19 引入的虚拟线程(类似 Go 协程),可以用同步编程方式来实现异步的效果。
“携程技术”公众号
分享,交流,成长